1. Field of the Invention
The present invention relates to an image processing apparatus.
2. Description of the Related Art
Recently, a central processing unit (CPU) is incorporated in an image forming apparatus in the same manner as in a general-purpose computer and the CPU is used to run various applications to control various operations of the image forming apparatus. Examples of such image processing apparatuses are printers, copiers, scanners, facsimiles, or multifunction products (MFPs) in which various functions are bundled together in one casing.
Japanese Patent No. 3679349 discloses an image forming apparatus in which a function to be shared among different applications is prepared as a platform and an application programming interface (API) included in the platform is used to implement the applications.
Japanese Patent Application Laid-open No. 2004-072527 discloses an MFP in which an image obtained by scanning is marked with a specific color to specify a closed area in the image, the closed area is extracted, and the image within or out of the closed area is used in accordance with the specific color.
Japanese Patent Application Laid-open No. 2003-244412 discloses an image processing apparatus in which an original to be transmitted to multi addresses is marked with a plurality of colors in a plurality of formats, a process to be performed is determined for each marked area of the original, and if an address list containing the multi addresses needs to be edited, the address list is permanently changed by using marking data.
According to the technologies described in Japanese Patent No. 3679349, Japanese Patent Application Laid-open No. 2004-072527, and Japanese Patent Application Laid-open No. 2003-244412, because the function to be shared in the applications is prepared as the platform, it is possible to customize functions as desired, and expand functions as desired, and prevent unnecessary overlapping of function.
However, if a function to be provided by the platform, or the interface (I/F) granularity, is not properly designed, it is often difficult to increase the development efficiency of applications.
For example, if the granularity is too fine, many API calls are required even for an application that provides a simple service, and the source code of the application becomes complicated.
On the other hand, if the granularity is too coarse, when an application for providing a service in which a part of a specific function is changed is to be implemented, the platform needs to be changed, which can increase man-hours for development. Especially, if dependency between modules in the platform is strong, it is often necessary, not only to add a new function to the platform, but also to change an existing part, which causes a complicated process.
Moreover, when an application in which a part of service (for example, an input operation of an image) provided by an existing application has been changed is to be implemented, the existing application cannot be called to provide a part of the service that has not been changed. Therefore, it is necessary to describe a new source code and implement a new application.